package com.sale.goods.service;

import com.sale.common.mybatis.core.page.PageQuery;
import com.sale.common.mybatis.core.page.TableDataInfo;
import com.sale.goods.api.dto.ImparityGoodsDto;
import com.sale.goods.api.vo.GetDataByCodeGoodsVo;
import com.sale.goods.domain.dto.GoodsDisburseDto;
import com.sale.goods.domain.dto.ReceiptAndPaymentDocDto;
import com.sale.goods.domain.vo.GoodsDisburseVo;

import java.util.List;

/**
 * @Description 其他支出单
 * @Date 23-08-07
 * @Author hl
 **/
public interface IGoodsDisburseService {

    /**
     * 分页查询其他支出单
     *
     * @param goodsDisburseVo,pageQuery
     * @return 其他支出单集合
     */
    TableDataInfo<GoodsDisburseDto> selectDisburseList(GoodsDisburseVo goodsDisburseVo, PageQuery pageQuery);

    /**
     * 新增其他支出单
     *
     * @param goodsDisburseVo,pageQuery
     * @return int
     */
    int insertDisburse(GoodsDisburseVo goodsDisburseVo) throws Exception;

    /**
     * 查询单个其他支出单
     *
     * @param disburseId,pageQuery
     * @return int
     */
    Object selectDisburseById(long disburseId);

    /**
     * 删除单个其他支出单
     *
     * @param disburseId,pageQuery
     * @return int
     */
    int deleteDisburseById(Long disburseId);

    /**
     * 修改单个其他支出单
     *
     * @param goodsDisburseVo,pageQuery
     * @return int
     */
    int updateDisburseEdit(GoodsDisburseVo goodsDisburseVo);

    /**
     * 提交审核
     *
     * @param disburseId
     * @return int
     */
    int submitReview(Long disburseId);

    /**
     * 撤销审核
     *
     * @param disburseId
     * @return int
     */
    int deleteReview(Long disburseId);

    /**
     * 审核单据
     *
     * @param goodsDisburseVo
     * @return int
     */
    int goodSExamineReview(GoodsDisburseVo goodsDisburseVo) throws Exception;

    /**
     * 获取其他支出单 (弹框)
     */
    TableDataInfo<ReceiptAndPaymentDocDto> selectDisbursePopList(GoodsDisburseVo goodsDisburseVo, PageQuery pageQuery);

    /**
     * 财务-核销单 通过获取未全部核销的其他支出单数据
     */
    List<ImparityGoodsDto> getNoVerificationList(GetDataByCodeGoodsVo getDataByCodeVo);
}
